package com.zhouyu.examplemingle.cacl;

import org.junit.Test;

public class DiguiCacl {

    //计算1-n的累加
    @Test
    public void testSum(){
        int sumNum = sumNum(5);
        System.out.println(sumNum);
    }

    private int sumNum(int n){
        if(n==1){
            return 1;
        }
        return n+sumNum(n-1);
    }

    //斐波那契数列
    //0(0)、1(1)、1(2)、2(3)、3(4)、5(5)、8(6)、13(7)、21(8)
    @Test
    public void tesFib(){
        int fib1 = fib1(8);
        System.out.println(fib1);
    }

    public int fib1(int n){
        if(n==0){
            return 0;
        }
        if(n==1||n==2){
            return 1;
        }
        return fib1(n-1)+fib1(n-2);
    }

    //用数组求解
    public static int fib2(int n) {
        int[] arr = new int[n + 1];
        arr[0] = 0;
        arr[1] = 1;
        for (int i = 2; i <= n; i++) {
            //造一个数组，将之前的数据全部放到数组
            //每次都从2开始
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        return arr[n];
    }
}
